import { onMounted, onUnmounted, getCurrentInstance } from "vue";
import { onShow } from "@dcloudio/uni-app";
import pageRefreshManager from "@/utils/pageRefreshManager";

/**
 * 自动刷新 composable
 * 只需要传入刷新函数，会自动在店铺切换时刷新
 * 
 * @param {Function} refreshCallback - 刷新数据的回调函数
 * @param {Object} options - 配置选项
 * @param {Boolean} options.immediate - 是否立即执行（默认 true）
 * 
 * @example
 * // 在页面中使用
 * useAutoRefresh(() => {
 *   loadData();
 * });
 */
export function useAutoRefresh(refreshCallback, options = {}) {
  const { immediate = true } = options;

  // 获取当前页面路径
  const instance = getCurrentInstance();
  const route = instance?.proxy?.$route?.path || instance?.proxy?.$mp?.page?.route;

  if (!route) {
    console.warn("[useAutoRefresh] 无法获取页面路径");
    return;
  }

  // 完整的页面路径（包含 /）
  const fullRoute = route.startsWith("/") ? route : `/${route}`;

  console.log(`[useAutoRefresh] 页面 ${fullRoute} 注册自动刷新`);

  // 注册刷新回调
  onMounted(() => {
    pageRefreshManager.register(fullRoute, refreshCallback);
    pageRefreshManager.setCurrentRoute(fullRoute);

    // 立即执行一次
    if (immediate) {
      console.log(`[useAutoRefresh] 页面 ${fullRoute} 首次加载`);
      refreshCallback();
    }
  });

  // 页面显示时更新当前路径
  onShow(() => {
    pageRefreshManager.setCurrentRoute(fullRoute);
    console.log(`[useAutoRefresh] 页面 ${fullRoute} 显示`);
  });

  // 页面卸载时注销
  onUnmounted(() => {
    pageRefreshManager.unregister(fullRoute);
    console.log(`[useAutoRefresh] 页面 ${fullRoute} 卸载`);
  });
}

